iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
Software Development

闖入DLL的世界 DLL我要進來了哦系列 第 23

第二十三天:繼續整理目前以來有使用的函數

  • 分享至 

  • xImage
  •  

嗨大家好我是Andy,今天我們繼續來複習之前有調用的函數,廢話不多說我們直接進入主題。


OpenProcess

字面上的意思透過Pid獲取線程的句柄
程式碼的部分是

HANDLE OpenProcess=(dwDesiredAccess,bInheritHandle,Pid);

dwDesiredAccess

dwDesiredAccess是Microsoft定義的主要是管理存取的權限,如果是要所有存取省麻煩的話就使用PROCESS_ALL_ACCESS

bInheritHandle

bInheritHandle在Mircosoft定義中只有true和false,如果使用的是true那Handle將會繼承該線程,所以這邊我們在一開始的時候就使用False

Pid

Pid當然就是線程被工作管理員分配的一個數字,可以在工作管理員詳細資料裡面查看


VirtualAllocEx

這個函數是申請一個位址給dll,所以只有會再注入中有,卸除的部分不會有VirtualAllocEx
程式長這樣

LPVOID VirtualAllocEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);

hProcess

這是使用OpenProcess拿的句柄不是LoadLibrary獲取的句柄

lpAddress

這個的定義是保存位址,但是通常都使用NULL讓它自動分配

dwSize

在一開始我們是使用strlen(Path)+1,這個就是要分配的內存大小

strlen計算字符串

flAllocationType

在Mircosoft定義的是記憶體位址的存取

有興趣的話可以去看一下點我點我

flProtect

這個我們之前沒有使用到,但在這邊簡單做介紹主要是做讀寫的權限規範(目前看Mircosoft 參數定義)

結語

在之前可能不太懂每個參數的用意,所以一個一個看Mircosoft網站上面的定義,因為感覺只記程式怎麼打最後學一學還是會忘記,那我們今天先到這裡,我們明天見。
雙十節要來啦啦啦啦啦啦啦啦啦啦啦啦啊啦啦啊啦啦啦啦啦啦


上一篇
第二十二天:整理一下目前來有使用過的函數
下一篇
第二十四天:常用函數類型
系列文
闖入DLL的世界 DLL我要進來了哦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言